package com.buddy.design.pattern._02singleton;

import java.io.Serializable;

public class HungrySingleton implements Serializable{

    //注意final修饰
    private static final HungrySingleton INSTANCE = new HungrySingleton();

    private HungrySingleton() {

    }

    public static HungrySingleton getInstance() {
        return INSTANCE;
    }

    /*
     * 在jdk中ObjectInputStream的类中有readUnshared（）方法，
     * 如果被反序列化的对象的类存在readResolve这个方法，他会调用这个方法来返回一个“array”
     * 然后浅拷贝一份，作为返回值，并且无视掉反序列化的值，即使那个字节码已经被解析
     *
     *
     * 重写readResolve方法，只不过是覆盖了反序列化出来的对象
     * 还是创建了两次，发生在JVM层面，相对来说比较安全；
     * 之前发序列化出来的对象会被GC回收
     */
    private Object readResolve(){
        return INSTANCE;
    }
}
